package iechecs;

public abstract class EchecsFoncteur<T1, T2, R> extends AFoncteur<R> {

    abstract public R fn(T1 arg1, T2 arg2);

    @Override
    public R eval(Object... args) {

        return fn((T1) args[0], (T2) args[1]);
    }

    public EchecsFoncteur() {
        FoncteurBinaire<T1, T2, R> FB = new FoncteurBinaire<T1, T2, R>() {

            @Override
            public R fn(T1 arg1, T2 arg2) {
                throw new UnsupportedOperationException("Not supported yet.");
            }
        };
        Object[] args = new Object[2];
        FB.eval(args);
        T1 arg1 = (T1) args[0];
        T2 arg2 = (T2) args[1];

        FB.fn(arg1, arg2);

    }

//    public static <T> T getMilieu(T[] tableau) {
//        return tableau[tableau.length / 2];
//    }
}
